fundamental counting principles